Memory devices are typically provided as internal, semiconductor, integrated circuits and/or external removable devices in computers or other electronic devices. There are many different types of memory including Random Access Memory (RAM), Read-Only Memory (ROM), Dynamic Random Access Memory (DRAM), Synchronous DRAM (SDRAM), Flash memory, and resistance variable memory, among others. Types of resistance variable memory include memories such as programmable conductor memory, Phase Change Random Access Memory (PCRAM), Resistive Random Access Memory (RRAM), Magnetoresistive Random Access Memory (MRAM; also referred to as magnetic random access memory), Conductive-Bridging Random Access Memory (CBRAM), and Spin Torque Transfer Random Access Memory (STT-RAM), among others.
Non-volatile memory may be used in, for example, personal computers, portable memory sticks, solid state drives (SSDs), personal digital assistants (PDAs), tablets, digital cameras, cellular telephones, portable music players (e.g., MP3 players), and movie players, among other electronic devices. Some types of data, such as program code, user data, and system data, such as a basic input/output system (BIOS), are typically stored in non-volatile memory devices.
Resistance variable memory, such as RRAM or STT-RAM, includes resistance variable memory cells that can store data based on the resistance state of a storage element (e.g., a memory element having a variable resistance). As such, resistance variable memory cells can be programmed to store data corresponding to a target data state by varying the resistance level of the memory element. Resistance variable memory cells can be programmed to a target data state (e.g., corresponding to a particular resistance state) by applying a programming signal to the resistance variable memory cells. Programming signals can include applying sources of energy (e.g., an electrical field or magnetic field), such as by applying positive or negative electrical signals (e.g., positive or negative voltage or current signals) to the memory cells for a particular duration. Moreover, these applied signals may have particular shapes, such as pulses, ramps, sinusoids, and other suitable shapes.
A resistance variable memory cell can be programmed to one of a number of data states. For example, a single level cell (SLC) may be programmed to one of two data states, a low resistance state that corresponds to a set data state (e.g., logic 1), or a high resistance state that corresponds to a reset data state (e.g., logic 0). The data state of the memory cell can depend on whether the cell is programmed to a resistance above or below a particular level. As an additional example, various resistance variable memory cells can be programmed to one of multiple different data states corresponding to different resistance levels. Such cells may be referred to as multi-state cells, multi-digit cells, or multi-level cells (MLCs), and can represent multiple binary digits of data (e.g., 10, 01, 00, 11, 111, 101, 100, 1010, 1111, 0101, 0001, etc.).
In some instances, a sensing operation used to determine the data state of a resistance variable memory cell may incorrectly determine the data state of the resistance variable memory cell. A memory cell can be sensed by comparing an electrical parameter of the memory cell to an electrical parameter of another memory cell or combination of memory cells that are reference memory cell(s). For example, the current flowing into the memory cell in some defined bias condition may be compared to the current flowing into a reference memory cell in the same bias conditions. The memory cell is then declared to be in a specific logic state depending on whether the current in the memory cell is greater than or less than the current in the reference memory cell. This sensing operation can be fast and simple, but may result in sensing errors. For example, a signal associated with the memory cell during a sensing operation may or may not correspond to a data state to which the memory cell was programmed, thus resulting in sensing an incorrect data state for the memory cell. Thus, improvements in detecting the data state of resistance variable memory are desired.